import axios from 'axios'
import { Toast } from '@nutui/nutui'
import STATUS from '@/enum/STATUS.js'

// const aNotLoginPage = ["/login"];
// const loginPage = "/login";

// axios#request(config)
// axios#get(url[, config])
// axios#delete(url[, config])
// axios#head(url[, config])
// axios#options(url[, config])
// axios#post(url[, data[, config]])
// axios#put(url[, data[, config]])
// axios#patch(url[, data[, config]])

axios.interceptors.request.use(
  function(resp) {
    // let isLogin = resp.headers.isLogin === undefined ? true : resp.headers.isLogin;
    const isLogin = resp.headers.isLogin !== false
    const sid = sessionStorage.getItem('sid')
      ? JSON.parse(sessionStorage.getItem('sid'))
      : {}

    // 没有登陆-跳到登陆页面
    // if (isLogin && !sid.access_token) {
    //   location.replace(sessionStorage.getItem("logoutURL"));
    //   return;
    // }
    if (isLogin) {
      resp.headers['Authorization'] = 'bearer ' + sid.access_token
      delete resp.headers.isLogin
    }
    return resp
  },
  function(error) {
    // 对响应错误做点什么
    return Promise.reject(error)
  }
)
axios.interceptors.response.use(
  function(resp) {
    const respData = resp.data || {}
    const errLv = respData.errLv || 3 // 1是登录提示、2是token失效、3是token过期、大于3是其他
    // let sid = sessionStorage.getItem("sid");

    switch (respData.code) {
      case STATUS.identity_error[0]: // 没登陆
        if (errLv >= 1) {
          Toast.fail(respData.msg || STATUS.identity_error[1], {
            onClose: () => {
              sessionStorage.clear()
              location.replace('/')
            }
          })
          break
        } else {
          return resp
        }
      case STATUS.token_error[0]: // token错误
        if (errLv >= 2) {
          Toast.fail(respData.msg || STATUS.token_error[1], {
            onClose: () => {
              sessionStorage.clear()
              location.replace('/')
            }
          })
          break
        } else {
          return resp
        }
      // 过期
      case STATUS.token_overdue[0]:
        if (errLv >= 3) {
          Toast.fail(respData.msg || STATUS.token_overdue[1], {
            onClose: () => {
              sessionStorage.clear()
              location.replace('/')
            }
          })
        }
        break
      default:
        return resp
    }

    // 对响应数据做点什么
  },
  function(error) {
    // Message("服务器或网络出现问题");
    // 对响应错误做点什么
    return Promise.reject(error)
  }
)
export default axios
